/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model.Construction.Commerces;

import Model.Construction.Industrie.Industrie;
import Model.Construction.Travailleur;
import Model.Ville;

/**
 *
 * @author light
 */
public abstract class Commerce extends Travailleur {

    protected int prixVente = 10;
    protected int consommation = 0;
    protected int typeConsomme = 0;
    boolean aEteApprovisionne = true;
    private Industrie[] Liste_industrie;

    public Commerce(int tx, int ty, Ville v, int prix) {
        super(tx, ty, v, prix);
        travailleur = 0;
        Liste_industrie = new Industrie[160];
    }

    @Override
    public void ajoutAVille(int x, int y) {
        super.ajoutAVille(x, y);
        ville.addCommerceList(this);
    }

    @Override
    public String getInfo() {
        String s1 = super.getInfo();
        String s2 = "";
        for(int i=0; i<Liste_industrie.length;i++) {
	        if(Liste_industrie[i] != null) {
		        String n = Liste_industrie[i].getClass().getName();
		        String parse[] = n.split("\\.");
		        s2 += (new String(parse[3])+" ("+Liste_industrie[i].getPosX()+","+
		               Liste_industrie[i].getPosY()+")\n");
	        }
        }
        return s1 + s2;
    }

    @Override
    public void payerImpot() {
        if (aEteApprovisionne) {
            super.payerImpot();
        }
    }

    public void consommation() {
        boolean aEteApprovisionneNourriture = false;
        boolean aEteApprovisionneTextile = false;
        int i = 0;
        while ((!aEteApprovisionneNourriture || !aEteApprovisionneTextile) && i < Liste_industrie.length) {
            switch (typeConsomme) {
                case TEXTILE:
                    if (Liste_industrie[i] != null && Liste_industrie[i].retraitEstPossible(consommation, TEXTILE)) {
                        Liste_industrie[i].consommation(consommation);
                        aEteApprovisionneNourriture = true;
                        aEteApprovisionneTextile = true;
                        ville.addArgent(prixVente);
                        ville.addTextileConsomme(consommation);
                        //System.out.println("vente textile");
                    }
                    break;
                case NOURRITURE:
                    if (Liste_industrie[i] != null && Liste_industrie[i].retraitEstPossible(consommation, NOURRITURE)) {
                        Liste_industrie[i].consommation(consommation);
                        aEteApprovisionneNourriture = true;
                        aEteApprovisionneTextile = true;
                        ville.addArgent(prixVente);
                        ville.addNourritureConsomme(consommation);
                        //System.out.println("vente nourriture");
                    }
                    break;
                case NOURRITURE_TEXTILE:

                    if (Liste_industrie[i] != null && Liste_industrie[i].retraitEstPossible(consommation, NOURRITURE)) {
                        Liste_industrie[i].consommation(consommation);
                        aEteApprovisionneNourriture = true;
                        ville.addArgent(prixVente);
                        ville.addNourritureConsomme(consommation);
                        //System.out.println("vente nourriture");
                    }
                    if (Liste_industrie[i] != null && Liste_industrie[i].retraitEstPossible(consommation, TEXTILE)) {
                        Liste_industrie[i].consommation(consommation);
                        aEteApprovisionneTextile = true;
                        ville.addArgent(prixVente);
                        ville.addTextileConsomme(consommation);
                        //System.out.println("vente textile");
                    }
                    break;
            }
            i++;
        }
        if(aEteApprovisionneNourriture && aEteApprovisionneTextile){
            aEteApprovisionne = true;
        }

    }

    public void setListeIndustrie(Industrie[] liste) {

        for (int i = 0; i < 160; i++) {
            if (liste[i] != null) {
                Liste_industrie[i] = liste[i];
            }
        }

    }

    public Industrie[] getListeIndustrie() {
        return Liste_industrie;
    }

    public void affiche_industrie()
    {
        for (int i = 0; i < 160; i++) {
            if (Liste_industrie[i] != null) {
                System.out.println(Liste_industrie[i].getClass().getName()+"("+Liste_industrie[i].getPosX()+","+Liste_industrie[i].getPosY()+")");
            }}
       System.out.println();
    }
}
